<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!-- 
        1. 参数分类
            形式参数(parameter): 俗称"形参", 定义函数给的参数
            实际参数(argument): 俗称"实参", 调用函数给的参数
   
        2. 默认参数
            形参没有默认值, 传递实参时, 却没有给实参, 那么形参默认为undefined
            形参有默认值, 传递实参时, 却没有给实参, 那么形参采用 默认值
    
        3. 参数规则 
            * 不限制参数的数据类型
            * 不检查参数的数据类型
            * 不限制参数的个数

            实参个数 = 形参个数 | 完美 
            实参个数 > 形参个数 | 先来后到, 抛弃多余的实参
            实参个数 < 形参个数 | 先来后到, 多余的形参采用默认值 or undefined

            实参个数 不确定     | 使用 arguments对象 (形参一个都不需要设置)
     -->

    <script>
        // n1, n2 属于形参
        function demo1(n1 ,n2){

        }

        demo1(10,20)//10,20属于实参
        console.log('-------------');
    </script>

    <script>
        //实参未指定,形参也未指定,则形参默认为undefined
        //形参指定默认值,那么形参采用默认值
        function demo2(n1, n2=50){
            console.log('n1 = '+ n1);
            console.log('n2 = '+ n2);
        }

        demo2();


        demo2(10);

        demo2(10,20);

        console.log('----------------');


    </script>

    <script>
        
        //参数个数
        
        function demo3(n1 , n2){
            console.log('n1 = ' + n1);
            console.log('n2 = ' + n2);
        }

        //实参个数 = 形参个数
        demo3(100 , 200);
        console.log('------------------');

        //实参个数 > 形参个数
        demo3( 100 , 200 ,300 ,400 ,500);
        console.log('-----------------');

        //实参个数 < 形参个数
        
        demo3(100);
        demo3();
        console.log('------------------');

        //实参个数不确定时
        function demo4(){
            console.log( arguments );

            //单独获取一个实参
            
            console.log( arguments[0] );
            console.log( arguments[1] );
            console.log( arguments[2] );
            console.log( arguments[3] );
            console.log( arguments[4] );

            console.log( arguments.length );
        }
        demo4(10, 20 , 30, 40);
    </script>


    <script>
        //累加n个实参的总和
        
        function demo5(){
            var data = arguments;
            var sum = 0;
            for(var i = 0 ; i < data.length; i++){
                sum = sum + data[i];
            }

            return sum;
        }

        console.log( demo5(10,20,30) );
        console.log( demo5(10,20,30,40,50) );
        console.log( demo5(10,20,30,40,50,60,70) );
    </script>
</body>
</html>